Linuxkit 是什么? 这个我原来这博文【1】中大概介绍过,今天再重新说一下,其实 Linuxkit 就是一个强大的工具集,这个工具集可以定制化基于容器的操作系统,这些镜像可以部署到现有的一些云平台上,因为本身支持很多的镜像格式 kernel+initrd,qcow2 等。
废话不多说,我们演示一下如何 build 一个镜像,拿 docker 为例
1> $ git clone https://github.com/linuxkit/linuxkit.git
2> $ cd linuxkit
运行 make 命令
一会就 build 完成对应的工具,包括 linuxkit,moby,rtf
linuxkit 命令主要用于和 cloud 或者本地 hypervisor 交互的: push 镜像,部署镜像
moby 用于 build VM 镜像的
rtf 社区开发中运行集成测试的
3> 使用上面的工具开始 build 镜像
$ cd examples
$ moby build docker
默认生成 kernel+initrd 镜像,还有对应的启动参数
1 | -rw-r--r-- 1 root root 71622481 May 17 11:42 docker-initrd.img |
$ 运行 docker 镜像
1 | $ linuxkit run docker |
注意这里运行的时候,依赖一些可支持的平台,如下:
1 | Supported backends are (default platform in brackets): |
本文一台 CentOS 机器,装了相关的 QEMU 相关的软件,否则会出现不能运行,或者进入VM 后,出现乱码的状况
最后有如下的画面
1 | [ 12.764709] tsc: Refined TSC clocksource calibration: 2294.665 MHz |
执行 runc list 查看
1 | / # runc list |
进入 docker 容器,
1 | / # runc exec -t docker sh |
这样一个 VM 中的容器中运行的 docker 进程就 OK 了,也很简单
当然了社区这个工具开发相对时间不长,所以有些调试或者使用易用性上还有很多要做的工作
参考文献: